package com.net.core;

import com.net.core.utils.JVMUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.TaskScheduler;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.stereotype.Component;

/**
 * @Author zll
 * @Date 2021-07-15 15:39
 * @Version 1.0
 * @Describe 定时器任务
 */
@Component
@Slf4j
public class AppTimer {

    /**
     * 定时器模式是单线程的，如果有多个任务书时，容易导致阻塞，这里创建一个线程池，可以使得定时任务成为多线程任务
     * @return
     */
    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(10);
        scheduler.initialize();
        return scheduler;
    }


    /**
     * 打印内存信息的定时器，做个演示用，后期有啥定时任务可以模仿着写。
     */
    @Scheduled(fixedDelay = 60 * 1000)
    public void getMemoryInfo() {
        JVMUtils.jvmPrintWarnInfo();
    }





}
